package test06.stream.demo02.t09;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

/**
 * @author ZQX
 * @date 2025-04-08
 */
public class MainTest01 {
    public static void main(String[] args) {
        // 第一：定义集合或数组 - 数据源
        // 第二：创建 Stream 对象
        Stream<String> stream = Stream.of("AA", "BB", "AA", "CC");

        // 第三：调用 API 方法，实现相关的操作 - 延迟方法 + 终结方法
        // 1.收集流中的数据到List集合中
        // 1）Collectors.toList()：返回可变的集合（可增删元素）
        // List<String> list = stream.collect(Collectors.toList());

        // 2）流对象.toList()：：返回不可变的集合（调用 add() 会抛出异常）
        // List<String> list = stream.toList();

        // 3）参数一：提供容器，根据需求创建某个容器的实例，参数二：累加元素，将单个元素添加到容器，参数三：合并结果：在并行流中合并多个子容器
        // 特点：可变集合、可以指定用户需求的容器，如：LinkedList
        List<String> list = stream.collect(ArrayList::new, List::add, List::addAll);
        list.add("dd") ;
        list.forEach(System.out::println);

        // 2.收集流中的数据到 Set 集合中
        // Set<String> set = stream.collect(Collectors.toSet());
        // set.forEach(System.out::println);

        // 3.收集流中的数据到指定的集合（ArrayList）中
        // ArrayList<String> arrayList = stream.collect(Collectors.toCollection(ArrayList::new));
        // arrayList.forEach(System.out::println);


    }
}
